package com.example.forum.services;

import com.example.forum.model.User;
import org.springframework.stereotype.Service;


@Service
public interface UserService {

    /**
     * 创建一个普通的用户，插入语句，默认的返回值类型应该是受影响的行数
     * @param user
     */
    void createNormalUser(User user);

    /**
     * 根据用户名查询用户 （用户名是唯一的，昵称是任意的）
     * @param username
     * @return 返回一个User对象
     */
    User selectByUserName(String username);

    /**
     * 用户登录
     * @param username ⽤⼾名
     * @param password 密码
     * @return 返回一个User对象
     */
    User login(String username, String password);

    /**
     * 通过id查询用户，返回User对象
     * @param Id
     * @return
     */
    User selectById(Long Id);

    /**
     * 修改个人信息，默认返回受影响的行数
     * @param user
     */
    int modifyInfo(User user);

    /**
     * 修改密码，默认返回说受影响的行数
     * @param id
     * @param newPassword
     * @param oldPassword
     */
    int modifyPassword (Long id, String newPassword, String oldPassword);

    /**
     * 文章数量加一，默认返回受影响的行数
     * @param id
     * @return
     */
    int addOneArticleCountById(Long id);

    /**
     * 文章数量减一，默认返回受影响的行数
     * @param id
     */
    void subOneArticleCountById (Long id);

}
